﻿
// DlgProxy.cpp: 实现文件
//

#include "pch.h"
#include "framework.h"
#include "Lockclip.h"
#include "DlgProxy.h"
#include "LockclipDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CLockclipDlgAutoProxy

IMPLEMENT_DYNCREATE(CLockclipDlgAutoProxy, CCmdTarget)

CLockclipDlgAutoProxy::CLockclipDlgAutoProxy()
{
	EnableAutomation();

	// 为使应用程序在自动化对象处于活动状态时一直保持
	//	运行，构造函数调用 AfxOleLockApp。
	AfxOleLockApp();

	// 通过应用程序的主窗口指针
	//  来访问对话框。  设置代理的内部指针
	//  指向对话框，并设置对话框的后向指针指向
	//  该代理。
	ASSERT_VALID(AfxGetApp()->m_pMainWnd);
	if (AfxGetApp()->m_pMainWnd)
	{
		ASSERT_KINDOF(CLockclipDlg, AfxGetApp()->m_pMainWnd);
		if (AfxGetApp()->m_pMainWnd->IsKindOf(RUNTIME_CLASS(CLockclipDlg)))
		{
			m_pDialog = reinterpret_cast<CLockclipDlg*>(AfxGetApp()->m_pMainWnd);
			m_pDialog->m_pAutoProxy = this;
		}
	}
}

CLockclipDlgAutoProxy::~CLockclipDlgAutoProxy()
{
	// 为了在用 OLE 自动化创建所有对象后终止应用程序，
	//	析构函数调用 AfxOleUnlockApp。
	//  除了做其他事情外，这还将销毁主对话框
	if (m_pDialog != nullptr)
		m_pDialog->m_pAutoProxy = nullptr;
	AfxOleUnlockApp();
}

void CLockclipDlgAutoProxy::OnFinalRelease()
{
	// 释放了对自动化对象的最后一个引用后，将调用
	// OnFinalRelease。  基类将自动
	// 删除该对象。  在调用该基类之前，请添加您的
	// 对象所需的附加清理代码。

	CCmdTarget::OnFinalRelease();
}

BEGIN_MESSAGE_MAP(CLockclipDlgAutoProxy, CCmdTarget)
END_MESSAGE_MAP()

BEGIN_DISPATCH_MAP(CLockclipDlgAutoProxy, CCmdTarget)
END_DISPATCH_MAP()

// 注意: 我们添加了对 IID_ILockclip 的支持来支持类型安全绑定
//  以支持来自 VBA 的类型安全绑定。  此 IID 必须同附加到 .IDL 文件中的
//  调度接口的 GUID 匹配。

// {1319ad7d-f1c3-4cb1-bdc8-108c07ea8be1}
static const IID IID_ILockclip =
{0x1319ad7d,0xf1c3,0x4cb1,{0xbd,0xc8,0x10,0x8c,0x07,0xea,0x8b,0xe1}};

BEGIN_INTERFACE_MAP(CLockclipDlgAutoProxy, CCmdTarget)
	INTERFACE_PART(CLockclipDlgAutoProxy, IID_ILockclip, Dispatch)
END_INTERFACE_MAP()

// The IMPLEMENT_OLECREATE2 macro is defined in pch.h of this project
// {0ed04629-0c25-4fa7-9f43-5963b1d81ff6}
IMPLEMENT_OLECREATE2(CLockclipDlgAutoProxy, "Lockclip.Application", 0x0ed04629,0x0c25,0x4fa7,0x9f,0x43,0x59,0x63,0xb1,0xd8,0x1f,0xf6)


// CLockclipDlgAutoProxy 消息处理程序
